package corn

import (
	"yunj/pkg/yunj/core/enum/cornenum"
)

// 定时任务工作调度器
type taskScheduler struct {
	Tasks []TaskInterface
}

var TaskScheduler = &taskScheduler{}

// 开启调度器工作
func (s *taskScheduler) Start(tasks []TaskInterface) (err error) {
	s.Tasks = tasks
	for _, t := range tasks {
		// 判断是否启用
		if t.GetHandleStatus() != cornenum.TASK_STATUS_RUNNING {
			continue
		}
		err = t.StartHandle()
		if err != nil {
			return
		}
	}
	return
}

// 停止调度器工作
// 确保并发安全，引入锁
func (s *taskScheduler) Stop() {
	for _, t := range s.Tasks {
		t.StopHandle()
	}
}
